Product details
- ASIN : 012088478X
- Publisher : Morgan Kaufmann; 2nd edition (February 21, 2011)
- Language : English
- Hardcover : 824 pages
- ISBN-10 : 9780120884780
-
ISBN-13 : 978-0120884780
کتاب Engineering a Compiler Second Edition
This entirely revised second edition of Engineering a Compiler is full of technical updates and new material covering the latest developments in compiler technology. In this comprehensive text you will learn important techniques for constructing a modern compiler. Leading educators and researchers Keith Cooper and Linda Torczon combine basic principles with pragmatic insights from their experience building state-of-the-art compilers. They will help you fully understand important techniques such as compilation of imperative and object-oriented languages, construction of static single assignment forms, instruction scheduling, and graph-coloring register allocation.
- In-depth treatment of algorithms and techniques used in the front end of a modern compiler
- Focus on code optimization and code generation, the primary areas of recent research and development
- Improvements in presentation including conceptual overviews for each chapter, summaries and review questions for sections, and prominent placement of definitions for new terms
- Examples drawn from several different programming languages
The second edition of Engineering a Compiler presents both perspectives: big-picture views of the problems in compiler construction and detailed discussions of algorithmic alternatives. In preparing the second edition of Engineering a Compiler, we focused on the usability of the book, both as a textbook and as a reference for professionals. Specifically, we:
- Improved the flow of ideas to help the student who reads the book sequentially. Chapter introductions explain the purpose of the chapter, lay out the major concepts, and provide a high-level overview of the chapter’s subject matter. Examples have been reworked to provide continuity across chapters. In addition, each chapter begins with a summary and a set of keywords to aid the user who treats Engineering a Compiler as a reference book.
- Added section reviews and review questions at the end of each major section. The review questions provide a quick check as to whether or not the reader has understood the major points of the section.
- Moved definitions of key terms into the margin adjacent to the paragraph where they are first defined and discussed.
- Revised the material on optimization extensively so that it provides broader coverage of the possibilities for an optimizing compiler.
Compiler development today focuses on optimization and on code generation. A newly hired compiler writer is far more likely to port a code generator to a new processor or modify an optimization pass than to write a scanner or parser. The successful compiler writer must be familiar with current best-practice techniques in optimization, such as the construction of static single-assignment form, and in code generation, such as software pipelining. They must also have the background and insight to understand new techniques as they appear during the coming years.
Finally, they must understand the techniques of scanning, parsing, and semantic elaboration well enough to build or modify a front end. Our goal for the second edition of Engineering a Compiler has been to create a text and a course that exposes students to the critical issues in modern compilers and provides them with the background to tackle those problems. We have retained, from the first edition, the basic balance of material. Front ends are commodity components; they can be purchased from a reliable vendor or adapted from one of the many open-source systems. At the same time, optimizers and code generators are custom-crafted for particular processors and, sometimes, for individual models, because performance relies so heavily on specific low-level details of the generated code. These facts affect the way that we build compilers today; they should also affect the way that we teach compiler construction.
Even with automatic parser generators, the compiler writer must manage several issues to produce a robust, efficient parser for a real programming language. This chapter addresses several issues that arise in practice.
Review
"Keith Cooper and Linda Torczon are leading compilers researchers who have also built several state-of-the-art compilers. This book adeptly spans both worlds, by explaining both time-tested techniques and new algorithms, and by providing practical advice on engineering and constructing a compiler. Engineering a Compiler is a rich survey and exposition of the important techniques necessary to build a modern compiler."--Jim Larus, Microsoft Research
"The book is well written, and well supported with diagrams, tables, and illustrative examples. It is a suitable textbook for use in a compilers course at the undergraduate or graduate level, where the primary focus of the course is code optimization."--ACM’s Computing Reviews.com
"This book is a wealth of useful information, prepared didactically, with many helpful hints, historical indications, and suggestions for further reading. It is a helpful working book for undergraduate and intermediate-level students, written by authors with an excellent professional and teaching background. An engineer will use the book as a general reference. For special topics, an ambitious reader will consult more recent publications in the subject area."--ACM’s Computing Reviews.com
This entirely revised second edition of Engineering a Compiler is full of technical updates and new material covering the latest developments in compiler technology. In this comprehensive text you will learn important techniques for constructing a modern compiler. Leading educators and researchers Keith Cooper and Linda Torczon combine basic principles with pragmatic insights from their experience building state-of-the-art compilers. They will help you fully understand important techniques such as compilation of imperative and object-oriented languages, construction of static single assignment forms, instruction scheduling, and graph-coloring register allocation.
- In-depth treatment of algorithms and techniques used in the front end of a modern compiler
- Focus on code optimization and code generation, the primary areas of recent research and development
- Improvements in presentation including conceptual overviews for each chapter, summaries and review questions for sections, and prominent placement of definitions for new terms
- Examples drawn from several different programming languages
The second edition of Engineering a Compiler presents both perspectives: big-picture views of the problems in compiler construction and detailed discussions of algorithmic alternatives. In preparing the second edition of Engineering a Compiler, we focused on the usability of the book, both as a textbook and as a reference for professionals. Specifically, we:
- Improved the flow of ideas to help the student who reads the book sequentially. Chapter introductions explain the purpose of the chapter, lay out the major concepts, and provide a high-level overview of the chapter’s subject matter. Examples have been reworked to provide continuity across chapters. In addition, each chapter begins with a summary and a set of keywords to aid the user who treats Engineering a Compiler as a reference book.
- Added section reviews and review questions at the end of each major section. The review questions provide a quick check as to whether or not the reader has understood the major points of the section.
- Moved definitions of key terms into the margin adjacent to the paragraph where they are first defined and discussed.
- Revised the material on optimization extensively so that it provides broader coverage of the possibilities for an optimizing compiler.
Compiler development today focuses on optimization and on code generation. A newly hired compiler writer is far more likely to port a code generator to a new processor or modify an optimization pass than to write a scanner or parser. The successful compiler writer must be familiar with current best-practice techniques in optimization, such as the construction of static single-assignment form, and in code generation, such as software pipelining. They must also have the background and insight to understand new techniques as they appear during the coming years.
Finally, they must understand the techniques of scanning, parsing, and semantic elaboration well enough to build or modify a front end. Our goal for the second edition of Engineering a Compiler has been to create a text and a course that exposes students to the critical issues in modern compilers and provides them with the background to tackle those problems. We have retained, from the first edition, the basic balance of material. Front ends are commodity components; they can be purchased from a reliable vendor or adapted from one of the many open-source systems. At the same time, optimizers and code generators are custom-crafted for particular processors and, sometimes, for individual models, because performance relies so heavily on specific low-level details of the generated code. These facts affect the way that we build compilers today; they should also affect the way that we teach compiler construction.
Even with automatic parser generators, the compiler writer must manage several issues to produce a robust, efficient parser for a real programming language. This chapter addresses several issues that arise in practice.
Review
"Keith Cooper and Linda Torczon are leading compilers researchers who have also built several state-of-the-art compilers. This book adeptly spans both worlds, by explaining both time-tested techniques and new algorithms, and by providing practical advice on engineering and constructing a compiler. Engineering a Compiler is a rich survey and exposition of the important techniques necessary to build a modern compiler."--Jim Larus, Microsoft Research
"The book is well written, and well supported with diagrams, tables, and illustrative examples. It is a suitable textbook for use in a compilers course at the undergraduate or graduate level, where the primary focus of the course is code optimization."--ACM’s Computing Reviews.com
"This book is a wealth of useful information, prepared didactically, with many helpful hints, historical indications, and suggestions for further reading. It is a helpful working book for undergraduate and intermediate-level students, written by authors with an excellent professional and teaching background. An engineer will use the book as a general reference. For special topics, an ambitious reader will consult more recent publications in the subject area."--ACM’s Computing Reviews.com
منابع کتاب کتاب Engineering a Compiler Second Edition
این ویرایش دوم کاملاً اصلاحشده Engineering a Compiler مملو از بهروزرسانیهای فنی و مطالب جدید است که آخرین پیشرفتها در فناوری کامپایلر را پوشش میدهد. در این متن جامع با تکنیک های مهم برای ساخت یک کامپایلر مدرن آشنا می شوید. کیت کوپر و لیندا تورکزون، مربیان و محققان برجسته، اصول اولیه را با بینشهای عملگرایانه از تجربه خود در ساخت کامپایلرهای پیشرفته ترکیب میکنند. آنها به شما کمک میکنند تا تکنیکهای مهمی مانند کامپایل زبانهای امری و شی گرا، ساخت فرمهای تخصیص تک استاتیک، زمانبندی دستورالعملها و تخصیص ثبت رنگهای گراف را کاملاً درک کنید.
- درمان عمیق الگوریتم ها و تکنیک های مورد استفاده در قسمت جلویی یک کامپایلر مدرن
- تمرکز بر بهینه سازی کد و تولید کد، زمینه های اصلی تحقیق و توسعه اخیر
- بهبود در ارائه شامل مرورهای مفهومی برای هر فصل، خلاصه و سؤالات مروری برای بخش ها، و قرار دادن برجسته تعاریف برای اصطلاحات جدید
- نمونه هایی از چندین زبان برنامه نویسی مختلف گرفته شده است
این نسخه را تغییر می دهد
ویرایش دوم Engineering a Compiler هر دو دیدگاه را ارائه میکند: نماهای تصویری بزرگ از مشکلات در ساخت کامپایلر و بحثهای مفصل درباره جایگزینهای الگوریتمی. در تهیه ویرایش دوم مهندسی یک کامپایلر ، بر قابلیت استفاده از کتاب، هم به عنوان کتاب درسی و هم به عنوان مرجع برای متخصصان تمرکز کردیم. به طور خاص، ما:
- برای کمک به دانش آموزی که کتاب را به طور متوالی می خواند، جریان ایده ها را بهبود بخشید. مقدمههای فصل، هدف فصل را توضیح میدهند، مفاهیم اصلی را بیان میکنند، و یک نمای کلی در سطح بالایی از موضوع فصل ارائه میدهند. مثالها برای ارائه تداوم در سر فصلها دوباره کار شدهاند. علاوه بر این، هر فصل با یک خلاصه و مجموعه ای از کلمات کلیدی شروع می شود تا به کاربری کمک کند که Engineering a Compiler را به عنوان یک کتاب مرجع در نظر می گیرد.
- بررسی های بخش و سؤالات مروری در پایان هر بخش اصلی اضافه شد. سؤالات مرور بررسی سریعی را ارائه می دهد که آیا خواننده نکات اصلی بخش را درک کرده است یا خیر.
- تعاریف اصطلاحات کلیدی را به حاشیه مجاور پاراگراف منتقل کرد، جایی که برای اولین بار تعریف و بحث شد.
- مطالب مربوط به بهینهسازی را بهطور گسترده مورد بازنگری قرار داد تا پوشش وسیعتری از امکانات یک کامپایلر بهینهساز ارائه دهد.
امروزه توسعه کامپایلر بر بهینه سازی و تولید کد متمرکز است. یک کامپایلر نویس تازه استخدام شده به مراتب بیشتر از نوشتن یک اسکنر یا تجزیه کننده، یک مولد کد را به یک پردازنده جدید منتقل می کند یا یک پاس بهینه سازی را تغییر می دهد. نویسنده موفق کامپایلر باید با بهترین تکنیکهای فعلی در بهینهسازی، مانند ساخت فرم تکتخصیص ایستا، و در تولید کد، مانند لولهگذاری نرمافزار، آشنا باشد. آنها همچنین باید پیشینه و بینش برای درک تکنیک های جدید را همانطور که در سال های آینده ظاهر می شوند داشته باشند.
در نهایت، آنها باید تکنیکهای اسکن، تجزیه و تفصیل معنایی را بهخوبی درک کنند تا بتوانند یک قسمت جلویی بسازند یا اصلاح کنند. هدف ما برای ویرایش دوم مهندسی یک کامپایلرایجاد یک متن و دوره ای بوده است که دانشجویان را با مسائل مهم در کامپایلرهای مدرن آشنا می کند و زمینه ای برای مقابله با این مشکلات برای آنها فراهم می کند. ما از نسخه اول، تعادل اولیه مطالب را حفظ کرده ایم. قسمت های جلویی اجزای کالا هستند. آنها را می توان از یک فروشنده قابل اعتماد خریداری کرد یا از یکی از بسیاری از سیستم های منبع باز اقتباس کرد. در عین حال، بهینهسازها و تولیدکنندههای کد بهصورت سفارشی برای پردازندههای خاص و گاهی اوقات برای مدلهای جداگانه ساخته میشوند، زیرا عملکرد به شدت به جزئیات سطح پایین کد تولید شده وابسته است. این حقایق بر نحوه ساخت کامپایلرهای امروزی تأثیر می گذارد. آنها همچنین باید بر نحوه آموزش ساخت کامپایلر تأثیر بگذارند.
یک فصل نمونه از مهندسی یک کامپایلر در مورد "مسائل عملی" را بخوانید.
حتی با مولدهای تجزیه کننده خودکار، نویسنده کامپایلر باید چندین مسئله را مدیریت کند تا یک تجزیه کننده قوی و کارآمد برای یک زبان برنامه نویسی واقعی تولید کند. این فصل به چندین موضوع می پردازد که در عمل مطرح می شوند.
مرور
کیت کوپر و لیندا تورکزون از محققان پیشرو در کامپایلر هستند که چندین کامپایلر پیشرفته را نیز ساخته اند. این کتاب با توضیح تکنیک های آزمایش شده و الگوریتم های جدید و ارائه توصیه های عملی در مورد مهندسی و به طرز ماهرانه ای هر دو جهان را در بر می گیرد. ساخت یک کامپایلر. مهندسی یک کامپایلر یک بررسی و توضیح غنی از تکنیک های مهم لازم برای ساخت یک کامپایلر مدرن است." --جیم لاروس، تحقیقات مایکروسافت
"کتاب به خوبی نوشته شده است، و به خوبی با نمودارها، جداول، و مثال های گویا پشتیبانی می شود. این کتاب درسی مناسبی برای استفاده در دوره های کامپایلر در سطح کارشناسی یا کارشناسی ارشد است، جایی که تمرکز اصلی این دوره بهینه سازی کد است."- - ACM's Computing Reviews.com
"این کتاب انبوهی از اطلاعات مفید است که به صورت آموزشی تهیه شده است، همراه با نکات مفید، نشانه های تاریخی و پیشنهادات برای مطالعه بیشتر. این کتاب کار مفیدی برای دانشجویان مقطع کارشناسی و متوسط است که توسط نویسندگانی با مهارت های حرفه ای و تدریس عالی نوشته شده است. پیشینه. یک مهندس از کتاب به عنوان یک مرجع کلی استفاده می کند. برای موضوعات خاص، یک خواننده جاه طلب از انتشارات اخیر در حوزه موضوعی مشورت خواهد کرد."-- ACM's Computing Reviews.com
این ویرایش دوم کاملاً اصلاحشده Engineering a Compiler مملو از بهروزرسانیهای فنی و مطالب جدید است که آخرین پیشرفتها در فناوری کامپایلر را پوشش میدهد. در این متن جامع با تکنیک های مهم برای ساخت یک کامپایلر مدرن آشنا می شوید. کیت کوپر و لیندا تورکزون، مربیان و محققان برجسته، اصول اولیه را با بینشهای عملگرایانه از تجربه خود در ساخت کامپایلرهای پیشرفته ترکیب میکنند. آنها به شما کمک میکنند تا تکنیکهای مهمی مانند کامپایل زبانهای امری و شی گرا، ساخت فرمهای تخصیص تک استاتیک، زمانبندی دستورالعملها و تخصیص ثبت رنگهای گراف را کاملاً درک کنید.
- درمان عمیق الگوریتم ها و تکنیک های مورد استفاده در قسمت جلویی یک کامپایلر مدرن
- تمرکز بر بهینه سازی کد و تولید کد، زمینه های اصلی تحقیق و توسعه اخیر
- بهبود در ارائه شامل مرورهای مفهومی برای هر فصل، خلاصه و سؤالات مروری برای بخش ها، و قرار دادن برجسته تعاریف برای اصطلاحات جدید
- نمونه هایی از چندین زبان برنامه نویسی مختلف گرفته شده است
این نسخه را تغییر می دهد
ویرایش دوم Engineering a Compiler هر دو دیدگاه را ارائه میکند: نماهای تصویری بزرگ از مشکلات در ساخت کامپایلر و بحثهای مفصل درباره جایگزینهای الگوریتمی. در تهیه ویرایش دوم مهندسی یک کامپایلر ، بر قابلیت استفاده از کتاب، هم به عنوان کتاب درسی و هم به عنوان مرجع برای متخصصان تمرکز کردیم. به طور خاص، ما:
- برای کمک به دانش آموزی که کتاب را به طور متوالی می خواند، جریان ایده ها را بهبود بخشید. مقدمههای فصل، هدف فصل را توضیح میدهند، مفاهیم اصلی را بیان میکنند، و یک نمای کلی در سطح بالایی از موضوع فصل ارائه میدهند. مثالها برای ارائه تداوم در سر فصلها دوباره کار شدهاند. علاوه بر این، هر فصل با یک خلاصه و مجموعه ای از کلمات کلیدی شروع می شود تا به کاربری کمک کند که Engineering a Compiler را به عنوان یک کتاب مرجع در نظر می گیرد.
- بررسی های بخش و سؤالات مروری در پایان هر بخش اصلی اضافه شد. سؤالات مرور بررسی سریعی را ارائه می دهد که آیا خواننده نکات اصلی بخش را درک کرده است یا خیر.
- تعاریف اصطلاحات کلیدی را به حاشیه مجاور پاراگراف منتقل کرد، جایی که برای اولین بار تعریف و بحث شد.
- مطالب مربوط به بهینهسازی را بهطور گسترده مورد بازنگری قرار داد تا پوشش وسیعتری از امکانات یک کامپایلر بهینهساز ارائه دهد.
امروزه توسعه کامپایلر بر بهینه سازی و تولید کد متمرکز است. یک کامپایلر نویس تازه استخدام شده به مراتب بیشتر از نوشتن یک اسکنر یا تجزیه کننده، یک مولد کد را به یک پردازنده جدید منتقل می کند یا یک پاس بهینه سازی را تغییر می دهد. نویسنده موفق کامپایلر باید با بهترین تکنیکهای فعلی در بهینهسازی، مانند ساخت فرم تکتخصیص ایستا، و در تولید کد، مانند لولهگذاری نرمافزار، آشنا باشد. آنها همچنین باید پیشینه و بینش برای درک تکنیک های جدید را همانطور که در سال های آینده ظاهر می شوند داشته باشند.
در نهایت، آنها باید تکنیکهای اسکن، تجزیه و تفصیل معنایی را بهخوبی درک کنند تا بتوانند یک قسمت جلویی بسازند یا اصلاح کنند. هدف ما برای ویرایش دوم مهندسی یک کامپایلرایجاد یک متن و دوره ای بوده است که دانشجویان را با مسائل مهم در کامپایلرهای مدرن آشنا می کند و زمینه ای برای مقابله با این مشکلات برای آنها فراهم می کند. ما از نسخه اول، تعادل اولیه مطالب را حفظ کرده ایم. قسمت های جلویی اجزای کالا هستند. آنها را می توان از یک فروشنده قابل اعتماد خریداری کرد یا از یکی از بسیاری از سیستم های منبع باز اقتباس کرد. در عین حال، بهینهسازها و تولیدکنندههای کد بهصورت سفارشی برای پردازندههای خاص و گاهی اوقات برای مدلهای جداگانه ساخته میشوند، زیرا عملکرد به شدت به جزئیات سطح پایین کد تولید شده وابسته است. این حقایق بر نحوه ساخت کامپایلرهای امروزی تأثیر می گذارد. آنها همچنین باید بر نحوه آموزش ساخت کامپایلر تأثیر بگذارند.
یک فصل نمونه از مهندسی یک کامپایلر در مورد "مسائل عملی" را بخوانید.
حتی با مولدهای تجزیه کننده خودکار، نویسنده کامپایلر باید چندین مسئله را مدیریت کند تا یک تجزیه کننده قوی و کارآمد برای یک زبان برنامه نویسی واقعی تولید کند. این فصل به چندین موضوع می پردازد که در عمل مطرح می شوند.
مرور
کیت کوپر و لیندا تورکزون از محققان پیشرو در کامپایلر هستند که چندین کامپایلر پیشرفته را نیز ساخته اند. این کتاب با توضیح تکنیک های آزمایش شده و الگوریتم های جدید و ارائه توصیه های عملی در مورد مهندسی و به طرز ماهرانه ای هر دو جهان را در بر می گیرد. ساخت یک کامپایلر. مهندسی یک کامپایلر یک بررسی و توضیح غنی از تکنیک های مهم لازم برای ساخت یک کامپایلر مدرن است." --جیم لاروس، تحقیقات مایکروسافت
"کتاب به خوبی نوشته شده است، و به خوبی با نمودارها، جداول، و مثال های گویا پشتیبانی می شود. این کتاب درسی مناسبی برای استفاده در دوره های کامپایلر در سطح کارشناسی یا کارشناسی ارشد است، جایی که تمرکز اصلی این دوره بهینه سازی کد است."- - ACM's Computing Reviews.com
"این کتاب انبوهی از اطلاعات مفید است که به صورت آموزشی تهیه شده است، همراه با نکات مفید، نشانه های تاریخی و پیشنهادات برای مطالعه بیشتر. این کتاب کار مفیدی برای دانشجویان مقطع کارشناسی و متوسط است که توسط نویسندگانی با مهارت های حرفه ای و تدریس عالی نوشته شده است. پیشینه. یک مهندس از کتاب به عنوان یک مرجع کلی استفاده می کند. برای موضوعات خاص، یک خواننده جاه طلب از انتشارات اخیر در حوزه موضوعی مشورت خواهد کرد."-- ACM's Computing Reviews.com
ارسال نظر درباره کتاب Engineering a Compiler Second Edition